home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / swing / FilePane$DetailsTableModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.8 KB  |  155 lines

  1. package sun.swing;
  2.  
  3. import java.io.File;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.List;
  7. import javax.swing.JFileChooser;
  8. import javax.swing.RowSorter;
  9. import javax.swing.event.ListDataEvent;
  10. import javax.swing.event.ListDataListener;
  11. import javax.swing.filechooser.FileSystemView;
  12. import javax.swing.plaf.basic.BasicDirectoryModel;
  13. import javax.swing.table.AbstractTableModel;
  14. import sun.awt.shell.ShellFolder;
  15. import sun.awt.shell.ShellFolderColumnInfo;
  16.  
  17. class FilePane$DetailsTableModel extends AbstractTableModel implements ListDataListener {
  18.    JFileChooser chooser;
  19.    BasicDirectoryModel directoryModel;
  20.    ShellFolderColumnInfo[] columns;
  21.    int[] columnMap;
  22.    // $FF: synthetic field
  23.    final FilePane this$0;
  24.  
  25.    FilePane$DetailsTableModel(FilePane var1, JFileChooser var2) {
  26.       this.this$0 = var1;
  27.       this.chooser = var2;
  28.       this.directoryModel = var1.getModel();
  29.       this.directoryModel.addListDataListener(this);
  30.       this.updateColumnInfo();
  31.    }
  32.  
  33.    void updateColumnInfo() {
  34.       ShellFolderColumnInfo[] var1 = ShellFolder.getFolderColumns(this.chooser.getCurrentDirectory());
  35.       ArrayList var2 = new ArrayList();
  36.       this.columnMap = new int[var1.length];
  37.  
  38.       for(int var3 = 0; var3 < var1.length; ++var3) {
  39.          ShellFolderColumnInfo var4 = var1[var3];
  40.          if (var4.isVisible()) {
  41.             this.columnMap[var2.size()] = var3;
  42.             var2.add(var4);
  43.          }
  44.       }
  45.  
  46.       this.columns = new ShellFolderColumnInfo[var2.size()];
  47.       var2.toArray(this.columns);
  48.       this.columnMap = Arrays.copyOf(this.columnMap, this.columns.length);
  49.       List var5 = FilePane.access$900(this.this$0) == null ? null : FilePane.access$900(this.this$0).getSortKeys();
  50.       this.fireTableStructureChanged();
  51.       this.restoreSortKeys(var5);
  52.    }
  53.  
  54.    private void restoreSortKeys(List<RowSorter.SortKey> var1) {
  55.       if (var1 != null) {
  56.          for(int var2 = 0; var2 < var1.size(); ++var2) {
  57.             RowSorter.SortKey var3 = (RowSorter.SortKey)var1.get(var2);
  58.             if (var3.getColumn() >= this.columns.length) {
  59.                var1 = null;
  60.                break;
  61.             }
  62.          }
  63.  
  64.          if (var1 != null) {
  65.             FilePane.access$900(this.this$0).setSortKeys(var1);
  66.          }
  67.       }
  68.  
  69.    }
  70.  
  71.    public int getRowCount() {
  72.       return this.directoryModel.getSize();
  73.    }
  74.  
  75.    public int getColumnCount() {
  76.       return this.columns.length;
  77.    }
  78.  
  79.    public Object getValueAt(int var1, int var2) {
  80.       return this.getFileColumnValue((File)this.directoryModel.getElementAt(var1), var2);
  81.    }
  82.  
  83.    private Object getFileColumnValue(File var1, int var2) {
  84.       return var2 == 0 ? var1 : ShellFolder.getFolderColumnValue(var1, this.columnMap[var2]);
  85.    }
  86.  
  87.    public void setValueAt(Object var1, int var2, int var3) {
  88.       if (var3 == 0) {
  89.          JFileChooser var4 = this.this$0.getFileChooser();
  90.          File var5 = (File)this.getValueAt(var2, var3);
  91.          if (var5 != null) {
  92.             String var6 = var4.getName(var5);
  93.             String var7 = var5.getName();
  94.             String var8 = ((String)var1).trim();
  95.             if (!var8.equals(var6)) {
  96.                String var9 = var8;
  97.                int var10 = var7.length();
  98.                int var11 = var6.length();
  99.                if (var10 > var11 && var7.charAt(var11) == '.') {
  100.                   var9 = var8 + var7.substring(var11);
  101.                }
  102.  
  103.                FileSystemView var12 = var4.getFileSystemView();
  104.                File var13 = var12.createFileObject(var5.getParentFile(), var9);
  105.                if (!var13.exists() && this.this$0.getModel().renameFile(var5, var13) && var12.isParent(var4.getCurrentDirectory(), var13)) {
  106.                   if (var4.isMultiSelectionEnabled()) {
  107.                      var4.setSelectedFiles(new File[]{var13});
  108.                   } else {
  109.                      var4.setSelectedFile(var13);
  110.                   }
  111.                }
  112.             }
  113.          }
  114.       }
  115.  
  116.    }
  117.  
  118.    public boolean isCellEditable(int var1, int var2) {
  119.       File var3 = this.this$0.getFileChooser().getCurrentDirectory();
  120.       return !FilePane.access$500(this.this$0) && var2 == 0 && FilePane.canWrite(var3);
  121.    }
  122.  
  123.    public void contentsChanged(ListDataEvent var1) {
  124.       new FilePane.DelayedSelectionUpdater(this.this$0);
  125.       this.updateColumnInfo();
  126.    }
  127.  
  128.    public void intervalAdded(ListDataEvent var1) {
  129.       int var2 = var1.getIndex0();
  130.       int var3 = var1.getIndex1();
  131.       if (var2 == var3) {
  132.          File var4 = (File)this.this$0.getModel().getElementAt(var2);
  133.          if (var4.equals(FilePane.access$1000(this.this$0))) {
  134.             new FilePane.DelayedSelectionUpdater(this.this$0, var4);
  135.             FilePane.access$1002(this.this$0, (File)null);
  136.          }
  137.       }
  138.  
  139.       this.fireTableRowsInserted(var1.getIndex0(), var1.getIndex1());
  140.    }
  141.  
  142.    public void intervalRemoved(ListDataEvent var1) {
  143.       this.fireTableRowsDeleted(var1.getIndex0(), var1.getIndex1());
  144.    }
  145.  
  146.    public ShellFolderColumnInfo[] getColumns() {
  147.       return this.columns;
  148.    }
  149.  
  150.    // $FF: synthetic method
  151.    static Object access$1300(FilePane$DetailsTableModel var0, File var1, int var2) {
  152.       return var0.getFileColumnValue(var1, var2);
  153.    }
  154. }
  155.